package com.yupi.oj.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yupi.oj.model.dto.question.QuestionAddRequest;
import com.yupi.oj.model.dto.question.QuestionEditRequest;
import com.yupi.oj.model.dto.question.QuestionPageRequest;
import com.yupi.oj.model.entity.Question;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yupi.oj.model.vo.QuestionVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author yanghaifeng
 * @description 针对表【question(题目表)】的数据库操作Service
 * @createDate 2024-04-11 15:36:41
 */
public interface QuestionService extends IService<Question> {

    /**
     * 创建题目
     *
     * @param questionAddRequest 请求数据
     * @param request
     * @return 创建题目 Id
     */
    Long add(QuestionAddRequest questionAddRequest, HttpServletRequest request);

    /**
     * 删除题目
     *
     * @param id      题目 Id
     * @param request
     * @return 是否删除成功
     */
    Boolean delete(Long id, HttpServletRequest request);

    /**
     * 修改题目
     *
     * @param questionEditRequest 请求数据
     * @param request
     * @return 题目 Id
     */
    Boolean edit(QuestionEditRequest questionEditRequest, HttpServletRequest request);

    /**
     * 查询问题
     *
     * @param id 题目 Id
     * @return 题目信息
     */
    QuestionVO queryById(Long id);


    /**
     * 分页查询
     *
     * @param page                分页参数
     * @param questionPageRequest 查询参数
     * @return 分页结果
     */
    Page<QuestionVO> queryPage(Page<Question> page, QuestionPageRequest questionPageRequest);

    /**
     * 列表查询
     *
     * @param questionPageRequest 查询参数
     * @return 列表结果
     */
    List<QuestionVO> queryList(QuestionPageRequest questionPageRequest);
}
